]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
user-menu: Disable combo box if no accounts are enabled
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 26 Oct 2011 19:16:08 +0000 (21:16 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 15 Nov 2011 12:54:29 +0000 (13:54 +0100)
If no telepathy accounts have been set up or enabled, the IM status
chooser won't have any effect. To avoid confusing behavior, make
the status selector insensitive in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=662800

js/ui/userMenu.js

index 3ae22720c760637eae3cd2b0f2e1c4106ba8e7fd..7e4fbe30c1150a9caf0fda42ba4d4b2d9fae75d9 100644 (file)
@@ -168,11 +168,20 @@ IMStatusChooserItem.prototype = {
         this._accountMgr = Tp.AccountManager.dup();
         this._accountMgr.connect('most-available-presence-changed',
                                  Lang.bind(this, this._IMStatusChanged));
+        this._accountMgr.connect('account-enabled',
+                                 Lang.bind(this, this._IMAccountsChanged));
+        this._accountMgr.connect('account-disabled',
+                                 Lang.bind(this, this._IMAccountsChanged));
+        this._accountMgr.connect('account-removed',
+                                 Lang.bind(this, this._IMAccountsChanged));
         this._accountMgr.prepare_async(null, Lang.bind(this,
             function(mgr) {
                 let [presence, status, msg] = mgr.get_most_available_presence();
 
                 let savedPresence = global.settings.get_int('saved-im-presence');
+
+                this._IMAccountsChanged(mgr);
+
                 if (savedPresence == presence) {
                     this._IMStatusChanged(mgr, presence, status, msg);
                 } else {
@@ -282,6 +291,13 @@ IMStatusChooserItem.prototype = {
         }
     },
 
+    _IMAccountsChanged: function(mgr) {
+        let accounts = mgr.get_valid_accounts().filter(function(account) {
+            return account.enabled;
+        });
+        this._combo.setSensitive(accounts.length > 0);
+    },
+
     _IMStatusChanged: function(accountMgr, presence, status, message) {
         if (!this._imPresenceRestored)
             this._imPresenceRestored = true;